package com.sgb.member.di;


import com.sgb.member.di.repository.MemberRepertory;
import com.sgb.member.di.repository.MemberRepertoryImpl;
import com.sgb.member.ui.activity.ChooseMemberTypeActivity;
import com.sgb.member.ui.activity.ClientDynamicStateActivity;
import com.sgb.member.ui.activity.ClientPerformanceActivity;
import com.sgb.member.ui.activity.ClientPropertyActivity;
import com.sgb.member.ui.activity.ClientQualificationActivity;
import com.sgb.member.ui.activity.DemandQuotationActivity;
import com.sgb.member.ui.activity.MemberAddClientActivity;
import com.sgb.member.ui.activity.MemberApplyJoinActivity;
import com.sgb.member.ui.activity.MemberAuditActivity;
import com.sgb.member.ui.activity.MemberBusinessActivity;
import com.sgb.member.ui.activity.MemberClientManageActivity;
import com.sgb.member.ui.activity.MemberCompanyWebActivity;
import com.sgb.member.ui.activity.MemberCompanyWebEditActivity;
import com.sgb.member.ui.activity.MemberDemandActivity;
import com.sgb.member.ui.activity.MemberInviteJoinActivity;
import com.sgb.member.ui.activity.MemberManageActivity;
import com.sgb.member.ui.activity.MemberOperationsActivity;
import com.sgb.member.ui.activity.MemberOpportunityActivity;
import com.sgb.member.ui.activity.PersonApplyJoinActivity;
import com.sgb.member.ui.activity.PersonInviteJoinActivity;
import com.sgb.member.view_model.AddClientModel;
import com.sgb.member.view_model.ChooseMemberTypeModel;
import com.sgb.member.view_model.ClientDynamicStateModel;
import com.sgb.member.view_model.ClientManageModel;
import com.sgb.member.view_model.ClientPerformanceModel;
import com.sgb.member.view_model.ClientPropertyModel;
import com.sgb.member.view_model.ClientQualificationModel;
import com.sgb.member.view_model.DemandDemandModel;
import com.sgb.member.view_model.DemandQuotationModel;
import com.sgb.member.view_model.MInviteJoinModel;
import com.sgb.member.view_model.MemberApplyJoinModel;
import com.sgb.member.view_model.MemberAuditModel;
import com.sgb.member.view_model.MemberBusinessModel;
import com.sgb.member.view_model.MemberCompanyWebEditModel;
import com.sgb.member.view_model.MemberCompanyWebModel;
import com.sgb.member.view_model.MemberDoorModel;
import com.sgb.member.view_model.MemberManageModel;
import com.sgb.member.view_model.MemberOperationModel;
import com.sgb.member.view_model.MemberOpportunityModel;
import com.sgb.member.view_model.PersonApplyJoinModel;
import com.sgb.member.view_model.PersonInviteJoinModel;
import com.swgk.core.base.api.BaseApiSource;
import com.swgk.core.base.di.Activity;
import com.swgk.core.base.model.preference.BasePreferenceSource;

import dagger.Module;
import dagger.Provides;

@Module
public class MemberModule {

    private MemberManageActivity memberManageActivity;
    private MemberAuditActivity memberauditactivity;

    private MemberInviteJoinActivity memberInviteJoinActivity;
    private MemberApplyJoinActivity memberApplyJoinActivity;
    private ClientPerformanceActivity clientperformanceactivity;
    private ClientQualificationActivity clientqualificationactivity;
    private ClientPropertyActivity clientpropertyactivity;
    private ClientDynamicStateActivity clientdynamicstateactivity;
    private MemberBusinessActivity memberBusinessActivity;
    private MemberOpportunityActivity memberOpportunityActivity;
    private DemandQuotationActivity demandquotationactivity;
    private MemberDemandActivity memberdemandactivity;
    private ChooseMemberTypeActivity chooseMemberTypeActivity;
    private MemberCompanyWebActivity memberCompanyWebActivity;
    private MemberCompanyWebEditActivity memberCompanyWebEditActivity;
    private PersonApplyJoinActivity personApplyJoinActivity;
    private PersonInviteJoinActivity personInviteJoinActivity;
    private MemberClientManageActivity memberclientmanageactivity;
    private MemberAddClientActivity memberaddclientactivity;
    private MemberOperationsActivity memberOperationsActivity;
//    private MemberDoorActivity memberDoorActivity;

    public MemberModule(MemberOperationsActivity memberOperationsActivity) {
        this.memberOperationsActivity = memberOperationsActivity;
    }

    public MemberModule(PersonInviteJoinActivity personInviteJoinActivity) {
        this.personInviteJoinActivity = personInviteJoinActivity;
    }

    public MemberModule(MemberCompanyWebEditActivity memberCompanyWebEditActivity) {
        this.memberCompanyWebEditActivity = memberCompanyWebEditActivity;
    }

    public MemberModule(MemberAddClientActivity memberaddclientactivity) {
        this.memberaddclientactivity = memberaddclientactivity;
    }

    public MemberModule(MemberClientManageActivity memberclientmanageactivity) {
        this.memberclientmanageactivity = memberclientmanageactivity;
    }

    public MemberModule(ChooseMemberTypeActivity chooseMemberTypeActivity) {
        this.chooseMemberTypeActivity = chooseMemberTypeActivity;
    }

    public MemberModule(MemberCompanyWebActivity memberCompanyWebActivity) {
        this.memberCompanyWebActivity = memberCompanyWebActivity;
    }

    public MemberModule(MemberDemandActivity memberdemandactivity) {
        this.memberdemandactivity = memberdemandactivity;
    }

    public MemberModule(DemandQuotationActivity demandquotationactivity) {
        this.demandquotationactivity = demandquotationactivity;
    }

    public MemberModule(MemberOpportunityActivity memberOpportunityActivity) {
        this.memberOpportunityActivity = memberOpportunityActivity;
    }

    public MemberModule(MemberBusinessActivity memberBusinessActivity) {
        this.memberBusinessActivity = memberBusinessActivity;
    }

    public MemberModule(ClientPerformanceActivity clientperformanceactivity) {
        this.clientperformanceactivity = clientperformanceactivity;
    }

    public MemberModule(ClientQualificationActivity clientqualificationactivity) {
        this.clientqualificationactivity = clientqualificationactivity;
    }

    public MemberModule(ClientPropertyActivity clientpropertyactivity) {
        this.clientpropertyactivity = clientpropertyactivity;
    }

    public MemberModule(ClientDynamicStateActivity clientdynamicstateactivity) {
        this.clientdynamicstateactivity = clientdynamicstateactivity;
    }

    public MemberModule(MemberApplyJoinActivity memberApplyJoinActivity) {
        this.memberApplyJoinActivity = memberApplyJoinActivity;
    }

    public MemberModule(MemberInviteJoinActivity memberInviteJoinActivity) {
        this.memberInviteJoinActivity = memberInviteJoinActivity;
    }

    public MemberModule(MemberManageActivity memberManageActivity) {
        this.memberManageActivity = memberManageActivity;
    }

    public MemberModule(PersonApplyJoinActivity personApplyJoinActivity) {
        this.personApplyJoinActivity = personApplyJoinActivity;
    }

//    public MemberModule(MemberDoorActivity activity) {
//        this.memberDoorActivity = activity;
//    }

    @Provides
    @Activity
    MemberOperationModel provideMemberOperationModel(MemberRepertory repertory) {
        return new MemberOperationModel(memberOperationsActivity, repertory);
    }

    @Provides
    @Activity
    PersonInviteJoinModel providePersonInviteJoinModel(MemberRepertory repertory) {
        return new PersonInviteJoinModel(personInviteJoinActivity, repertory);
    }

    @Provides
    @Activity
    PersonApplyJoinModel providePersonApplyJoinModel(MemberRepertory repertory) {
        return new PersonApplyJoinModel(personApplyJoinActivity, repertory);
    }

    @Provides
    @Activity
    MemberCompanyWebEditModel provideMemberCompanyWebEditModel(MemberRepertory repertory) {
        return new MemberCompanyWebEditModel(memberCompanyWebEditActivity, repertory);
    }

    @Provides
    @Activity
    ChooseMemberTypeModel provideChooseMemberTypeModel(MemberRepertory repertory) {
        return new ChooseMemberTypeModel(chooseMemberTypeActivity, repertory);
    }

    @Provides
    @Activity
    MemberCompanyWebModel provideMemberCompanyWebModel(MemberRepertory repertory) {
        return new MemberCompanyWebModel(memberCompanyWebActivity, repertory);
    }


    @Provides
    @Activity
    MemberOpportunityModel provideMemberOpportunityModel(MemberRepertory repertory) {
        return new MemberOpportunityModel(memberOpportunityActivity, repertory);
    }

    @Provides
    @Activity
    MemberBusinessModel provideMemberBusinessModel(MemberRepertory repertory) {
        return new MemberBusinessModel(memberBusinessActivity, repertory);
    }

    @Provides
    @Activity
    ClientDynamicStateModel provideClientDynamicStateModel(MemberRepertory repertory) {
        return new ClientDynamicStateModel(clientdynamicstateactivity, repertory);
    }

    @Provides
    @Activity
    ClientPerformanceModel provideClientPerformanceModel(MemberRepertory repertory) {
        return new ClientPerformanceModel(clientperformanceactivity, repertory);
    }

    @Provides
    @Activity
    ClientPropertyModel provideClientPropertyModel(MemberRepertory repertory) {
        return new ClientPropertyModel(clientpropertyactivity, repertory);
    }

    @Provides
    @Activity
    ClientQualificationModel provideClientQualificationModel(MemberRepertory repertory) {
        return new ClientQualificationModel(clientqualificationactivity, repertory);
    }

    @Provides
    @Activity
    MemberApplyJoinModel provideMemberApplyJoinModel(MemberRepertory repertory) {
        return new MemberApplyJoinModel(memberApplyJoinActivity, repertory);
    }

    @Provides
    @Activity
    MInviteJoinModel provideMInviteJoinModel(MemberRepertory repertory) {
        return new MInviteJoinModel(memberInviteJoinActivity, repertory);
    }

    public MemberModule(MemberAuditActivity memberauditactivity) {
        this.memberauditactivity = memberauditactivity;
    }

    @Provides
    @Activity
    MemberManageModel provideMemberManageModel(MemberRepertory repertory) {
        return new MemberManageModel(memberManageActivity, repertory);
    }

    @Provides
    @Activity
    MemberAuditModel provideMemberAuditModel(MemberRepertory repertory) {
        return new MemberAuditModel(memberauditactivity, repertory);
    }

    @Provides
    @Activity
    DemandQuotationModel DemandQuotationModel(MemberRepertory repertory) {
        return new DemandQuotationModel(demandquotationactivity, repertory);
    }

    @Provides
    @Activity
    DemandDemandModel DemandDemandModel(MemberRepertory repertory) {
        return new DemandDemandModel(memberdemandactivity, repertory);
    }


    @Provides
    @Activity
    ClientManageModel ClientManageModel(MemberRepertory repertory) {
        return new ClientManageModel(memberclientmanageactivity, repertory);
    }

    @Provides
    @Activity
    AddClientModel AddClientModel(MemberRepertory repertory) {
        return new AddClientModel(memberaddclientactivity, repertory);
    }

    @Provides
    @Activity
    MemberRepertory provideMemberRepertory(BaseApiSource apiSource, BasePreferenceSource preferenceSource) {
        return new MemberRepertoryImpl(apiSource, preferenceSource);
    }

//    @Provides
//    @Activity
//    MemberDoorModel provideMemberDoorModel(MemberRepertory repertory) {
//        return new MemberDoorModel(memberDoorActivity, repertory);
//    }



}
